/**
 * @file    damiao_drv.h
 * @brief   达妙电机相关接口
 * @details This is the detail description.
 * @author  wang-haoyu
 * @date    2025年7月10日 (created)
 * @version 0.0.1
 * @par Copyright (C):
 *          All Rights Reserved.
 * @par Encoding:
 *          UTF-8
 * @par Description        :
 * 1. Hardware Descriptions:
 *      None.
 * 2. Program Architecture:
 *      None.
 * 3. File Usage:
 *      None.
 * 4. Limitations:
 *      None.
 * 5. Else:
 *      None.
 * @par Modification:
 * -# Date          : 2025年7月10日;
 * Revision         : 0.0.1;
 * Author           : wang-haoyu;
 * Contents         :
 */
 
/* =============================================================================
 *                                header files
 * ========================================================================== */
#ifndef __DAMIAO_DRV_H
#define __DAMIAO_DRV_H

#include "jm_error_code.h"
#include "data.h"

/* =============================================================================
 *                              macros & constants
 * ========================================================================== */
#define FRAME_DATA_LEN 8
/* =============================================================================
 *                          data structure definitions
 * ========================================================================== */
typedef void (*msg_tx_state_t)(const void *, rt_size_t size);
typedef void (*msg_tx_urgent_state_t)(const void *, rt_size_t size);

/* =============================================================================
 *                         static variable definitions
 * ========================================================================== */

/* =============================================================================
 *                         static function definitions
 * ========================================================================== */

/* =============================================================================
 *                         global function definitions
 * ========================================================================== */
/*
 * 达秒电机错误码解析函数
 *
 * Parameter:
 *   Input:
 *		-state_word：状态字
 *   Output:
 * Returns:
 *	错误码
 */
rt_uint32_t damiao_drv_error_code_analys(rt_uint8_t state_word);

/*
* 达妙电机使/失能数据发送函数
 *
 * Parameter:
 *   Input:
 *		-drive_id：驱动器ID
 *		-sta_set：状态设置
 *		-CAN_frame_msg：数据包缓存区
 *   Output:
 * Returns:
 */
void damiao_drv_set_enable_state(rt_uint16_t node_id,bool sta_set);

/*
* 达妙电机使/失能数据紧急发送函数
 *
 * Parameter:
 *   Input:
 *		-drive_id：驱动器ID
 *		-sta_set：状态设置
 *		-CAN_frame_msg：数据包缓存区
 *   Output:
 * Returns:
 */
void damiao_drv_set_enable_urgent_state(rt_uint16_t node_id,bool sta_set);

/*
* 达妙电机零点保存数据发送函数
 *
 * Parameter:
 *   Input:
 *		-drive_id：驱动器ID
 *		-CAN_frame_msg：数据包缓存区
 *   Output:
 * Returns:
 */
void damiao_drv_save_zero_point_state(rt_uint16_t node_id);

/*
* 达妙电机清错数据发送函数
 *
 * Parameter:
 *   Input:
 *		-drive_id：驱动器ID
 *		-CAN_frame_msg：数据包缓存区
 *   Output:
 * Returns:
 */
void damiao_drv_clear_error_state(rt_uint16_t node_id);

/*
* 机械臂关节电机力位混控数据发送函数
 *
 * Parameter:
 *   Input:
 *		-node_id：驱动器ID
 *		-pos：期望位置
 *		-vel：最大速度限制
 *		-i_des：最大电流限制
 *		-obj：达秒电机设置结构体句柄
 *		-CAN_frame_msg：数据包缓存区
 *   Output:
 * Returns:
 */
void damiao_drv_force_pos_ctrl_state(rt_uint16_t node_id,float pos_des,rt_uint16_t vel_des,rt_uint16_t i_des);


#endif


/*******************************************************************************
 *                                  EOF
 ******************************************************************************/
